﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Devart.Data;

namespace Sistema_financiero
{
    public partial class frm_Buscar_Localidad : Form
    {
        public List<Entidades.Localidad> Lista_todas_localidades = new List<Sistema_financiero.Entidades.Localidad>();
        public List<Entidades.Localidad> Lista_todas_localidades_res = new List<Sistema_financiero.Entidades.Localidad>();
        public List<Entidades.Localidad> Lista_todas_localidades_completa = new List<Sistema_financiero.Entidades.Localidad>();
        public Entidades.Localidad Localidad_seleccionada = new Sistema_financiero.Entidades.Localidad();
        public string texto_anterior;
        public bool Aceptar; 
        
        public frm_Buscar_Localidad()
        {
            InitializeComponent();
            Aceptar = false;

            
        }

        private void Frm_Buscar_Localidad_Load(object sender, EventArgs e)
        {
            Lista_todas_localidades_completa = Lista_localidades();
            Lista_todas_localidades_res = Lista_todas_localidades_completa;
            dgv_Busqueda_Localidad.DataSource = Lista_todas_localidades_res;
            dgv_Busqueda_Localidad.Columns[0].Visible = false;
            dgv_Busqueda_Localidad.Columns[2].Visible = false;
            dgv_Busqueda_Localidad.Columns[4].Visible = false;
            dgv_Busqueda_Localidad.Columns[1].HeaderText = "Localidad";
            dgv_Busqueda_Localidad.AutoResizeColumns();
            texto_anterior = "";
            Enable_disable_aceptar(dgv_Busqueda_Localidad.Rows.Count);

        }

        private void tbx_Buscar_TextChanged(object sender, EventArgs e)
        {
            if (texto_anterior != null)
            {
                if (tbx_Buscar.Text.Contains(texto_anterior))
                {
                    Lista_todas_localidades_res = Lista_localidades(tbx_Buscar.Text, Lista_todas_localidades_res);
                    dgv_Busqueda_Localidad.DataSource = Lista_todas_localidades_res;
                    texto_anterior = tbx_Buscar.Text;
                }
                else
                {
                    Lista_todas_localidades_res = Lista_todas_localidades_completa;
                    Lista_todas_localidades_res = Lista_localidades(tbx_Buscar.Text, Lista_todas_localidades_res);
                    dgv_Busqueda_Localidad.DataSource = Lista_todas_localidades_res;
                    texto_anterior = tbx_Buscar.Text;
                }
            }
            else
            {
                Lista_todas_localidades_res = Lista_todas_localidades_completa;
                Lista_todas_localidades_res = Lista_localidades(tbx_Buscar.Text, Lista_todas_localidades_res);
                dgv_Busqueda_Localidad.DataSource = Lista_todas_localidades_res;
                texto_anterior = tbx_Buscar.Text;
            }
            Enable_disable_aceptar(dgv_Busqueda_Localidad.Rows.Count);
            
        }
        public List<Entidades.Localidad> Lista_localidades()
        {
            List<Entidades.Localidad> Lista = new List<Sistema_financiero.Entidades.Localidad>();
            Lista = Sistema_financiero.Entidades.Localidad.Obtener_Todas_Localidades();
            return Lista;
        }

        public List<Entidades.Localidad> Lista_localidades(string Filtro, List<Entidades.Localidad> Lista)
        {

            List<Entidades.Localidad> Lista_res = new List<Sistema_financiero.Entidades.Localidad>();

            foreach (Entidades.Localidad L in Lista)
            {
                if (L.Descripcion.ToLower().Contains(Filtro.ToLower()))
                {
                    Lista_res.Add(L);
                }
            }
                
            return Lista_res;
        }
    
        private void btn_Aceptar_Click(object sender, EventArgs e)
        {
            
            Localidad_seleccionada.ID = Convert.ToInt32(dgv_Busqueda_Localidad[0, dgv_Busqueda_Localidad.CurrentRow.Index].Value);
            Localidad_seleccionada.Id_departamento = Convert.ToInt32( dgv_Busqueda_Localidad[2, dgv_Busqueda_Localidad.CurrentRow.Index].Value);
            Localidad_seleccionada.Id_provincia = Convert.ToInt32( dgv_Busqueda_Localidad[4, dgv_Busqueda_Localidad.CurrentRow.Index].Value);
            Aceptar = true;
            this.Close();
        }

        private void Frm_Buscar_Localidad_FormClosed(object sender, FormClosedEventArgs e)
        {

        }

        private void pgSqlDataAdapter1_RowUpdated(object sender, Devart.Data.PostgreSql.PgSqlRowUpdatedEventArgs e)
        {
        
        }

        private void dgv_Busqueda_Localidad_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {

        }

        private void btn_Cancelar_Click(object sender, EventArgs e)
        {
            Localidad_seleccionada = null;
        }

        private void dgv_Busqueda_Localidad_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            
        }

        private void dgv_Busqueda_Localidad_CellContentDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            if (dgv_Busqueda_Localidad.RowCount > 0)
            {
                Localidad_seleccionada.ID = Convert.ToInt32(dgv_Busqueda_Localidad[0, dgv_Busqueda_Localidad.CurrentRow.Index].Value);
                Localidad_seleccionada.Id_departamento = Convert.ToInt32(dgv_Busqueda_Localidad[2, dgv_Busqueda_Localidad.CurrentRow.Index].Value);
                Localidad_seleccionada.Id_provincia = Convert.ToInt32(dgv_Busqueda_Localidad[4, dgv_Busqueda_Localidad.CurrentRow.Index].Value);
                Aceptar = true;
                this.Close();
            }
        }
        
        public void Enable_disable_aceptar(int cantidad_filas)
        {
            if (cantidad_filas > 0)
            {
                btn_Aceptar.Enabled = true;
            }
            else
            {
                btn_Aceptar.Enabled = false;
            }
        }

        private void frm_Buscar_Localidad_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (Aceptar == false)
            {
                 Localidad_seleccionada = null;
            }
        }
    }
}
